安全清空在线慢查询日志slow log的流程 (转) 一、概念部分: 顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slow query,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名,默认文件名为hostname-slow.log,默认目录也是数据目录。 慢查询日志采用的是简单的文本格式,可以通过各种文本编辑器查看其中的内容。其中记录了语句执行的时刻,执行所消耗的时间,执行用户,连接主机等相关信息。MySQL还提供了专门用来分析满查询日志的工具程序mysqlslowdump,用来帮助数据库管理人员解决可能存在的性能问题。 二、slow query log相关变量 2.1、命令行参数: --log-slow-queries 指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log 2.2、系统变量 log_slow_queries 指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log slow_query_log slow quere log的开关,当值为1的时候说明开启慢查询。 slow_query_log_file 指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log long_query_time 记录超过的时间,默认为10s log_queries_not_using_indexes log下来没有使用索引的query,可以根据情况决定是否开启 主要是zabbix数据库的日志占用了66G的,所以想清理下 1, see the slow log status; mysql> show variables like '%slow%'; +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+------------------------------------------+ | log_slow_queries | ON | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /mysqllog/slow_log/slow_queries_3306.log | +---------------------+------------------------------------------+ 4 rows in set (0.00 sec) 2, stop the slow log server. mysql> set global slow_query_log=0; Query OK, 0 rows affected (0.27 sec) mysql> show variables like '%slow%'; +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+------------------------------------------+ | log_slow_queries | OFF | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /mysqllog/slow_log/slow_queries_3306.log | +---------------------+------------------------------------------+ 4 rows in set (0.00 sec) mysql> mysql> show variables like '%slow%'; -- check slow log status +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+------------------------------------------+ | log_slow_queries | OFF | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /mysqllog/slow_log/slow_queries_3306.log | +---------------------+------------------------------------------+ 4 rows in set (0.00 sec) 3, reset the new path of slow log mysql> set global slow_query_log_file='/mysqllog/slow_log/slow_queries_3306_new.log'; Query OK, 0 rows affected (0.03 sec) 4, start the slow log server mysql> mysql> mysql> set global slow_query_log=1; Query OK, 0 rows affected (0.01 sec) mysql> show variables like '%slow%'; +---------------------+----------------------------------------------+ | Variable_name | Value | +---------------------+----------------------------------------------+ | log_slow_queries | ON | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /mysqllog/slow_log/slow_queries_3306_new.log | +---------------------+----------------------------------------------+ 4 rows in set (0.00 sec) 5, check the slow sql in the new slow log file. mysql> select sleep(10) as a, 1 as b; +---+---+ | a | b | +---+---+ | 0 | 1 | +---+---+ 1 row in set (10.00 sec) mysql> [mysql@xxx-xxx ~]$ more /mysqllog/slow_log/slow_queries_3306_new.log ...... Time Id Command Argument # Time: 140213 6:44:24 # User@Host: root[root] @ localhost [] # Query_time: 10.000365 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 SET timestamp=1392273864; select sleep(10) as a, 1 as b; 6, backup the old big slow log file to other directory. mv /mysqllog/slow_log/slow_queries_3306.log /mysqlbackup/slow_log/slow_queries_3306.log.bak.20140213